package de.htw_saarland.webservices.robotersteuerung;

import java.util.LinkedList;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;

import willy.communication.RoboFactory;

import de.htw_saarland.webservices.robotersteuerung.data.RobotData;

/**
 * Service dient dazu, später Roboter auswählen zu können
 * @author Sascha
 *
 */
@WebService(name="ChooseRoboterService") 
@SOAPBinding(style = SOAPBinding.Style.RPC) 
public class ChooseRobotService {
	
	/** 
	 * Roboter ID anfordern!  
	 * @return Gibt eine FakeID zurück die vorerst für 
	 * sämtliche Operationen genutzt werden kann! 
	 */
	@WebMethod(operationName="getRoboID")
	public String getRoboID()
	{
		return "ID001"; 
	}
	
	/**
	 * Liste mit Roboterdaten anfordern
	 * @return Fertige Liste
	 */
	@WebMethod(operationName="getRobotList")
	public RobotData[] getRobotList() 
	{
		LinkedList<RobotData> robotList = new LinkedList<RobotData>();  
		robotList = DataFacade.getDataFacade.getRobotData(); 
		RobotData[] dataList = new RobotData[robotList.size()]; 
		robotList.toArray(dataList); 		
		return dataList; 
	}
	
	/**
	 * Mit dieser Methode kann ein Roboter reserviert / gebucht werden
	 * @param roboID ID des Roboters 
	 * @param userName Benutzername 
	 * @return true wenn es geklappt hat, false falls der roboter nicht buchbar war
	 */
	@WebMethod(operationName="bookRobot")
	public boolean bookRobot(@WebParam(name="roboID") String roboID, @WebParam(name="userID") String userID)  
	{		
		RoboFactory rf = RoboFactory.getInstance; 
		return DataFacade.getDataFacade.bookRobot(roboID, userID); 
	}
	
	/**
	 * Mit dieser Methode kann ein Roboter storniert werden
	 * @param roboID ID des Roboters 
	 * @param userName Benutzername 
	 * @return true wenn es geklappt hat, false falls der roboter nicht buchbar war
	 */
	@WebMethod(operationName="cancelRobot")
	public boolean cancelRobot(@WebParam(name="roboID") String roboID,@WebParam(name="userID")  String userID) 
	{
		return DataFacade.getDataFacade.cancelRobot(roboID, userID); 
	}

}
